<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
		  xmlns:gml="http://www.opengis.net/gml"
		  xmlns:xls="http://www.opengis.net/xls"
		  targetNamespace="http://www.opengis.net/xls"
		  elementFormDefault="qualified"
		  version="1.2.1">
	<!--
		Copyright (c) 2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved.
		To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .
	-->
	<import namespace="http://www.opengis.net/gml" schemaLocation="gml4xls.xsd"/>
	<include schemaLocation="geometry.xsd"/>
	<!--  The ADTs defined in this document represent the minimum set of essential elements as determined from the analysis of the APIs provided by OpenLS sponsors and participants. There are many additional elements that may be added but these are considered to be optional. The APIs considered include: Oracle, Webraska, ESRI, Vodafone, opt[e]way, NavTech, IntelliWhere, and LocatioNet. -->
	<!--=============================================================================
						Root ADT XML schema types - XLS, ADT and Location
	================================================================================ -->
	<attribute name="lang" type="language"/>
	<element name="_ADT" type="xls:AbstractDataType" abstract="true">
		<annotation>
			<documentation>This is the abstract type that all other abstract types will extend</documentation>
		</annotation>
	</element>
	<complexType name="AbstractDataType"/>
	<element name="_Location" type="xls:AbstractLocationType" abstract="true" substitutionGroup="xls:_ADT"/>
	<complexType name="AbstractLocationType" abstract="true">
		<annotation>
			<documentation>Location can be one of four things: Position, POI, Address or Point. Each of those types has been defined in the XLS namespace with this in condiseration.  </documentation>
		</annotation>
		<complexContent>
			<extension base="xls:AbstractDataType"/>
		</complexContent>
	</complexType>
	<!-- ==================================================================
				Position ADT
	===================================================================== -->
	<complexType name="AbstractPositionType" abstract="true">
		<complexContent>
			<extension base="xls:AbstractLocationType"/>
		</complexContent>
	</complexType>
	<element name="_Position" type="xls:AbstractPositionType" abstract="true" substitutionGroup="xls:_Location"/>
	<complexType name="PositionType">
		<complexContent>
			<extension base="xls:AbstractPositionType">
				<sequence>
					<element ref="gml:Point"/>
					<choice minOccurs="0">
						<element ref="xls:Ellipse"/>
						<element ref="gml:CircleByCenterPoint"/>
						<element ref="xls:CircularArc"/>
						<element ref="gml:Polygon"/>
						<element ref="gml:MultiPolygon"/>
					</choice>
					<element name="QoP" type="xls:QualityOfPositionType" minOccurs="0">
						<annotation>
							<documentation>QoP as defined by LIF.</documentation>
						</annotation>
					</element>
					<element ref="xls:Time" minOccurs="0"/>
					<element name="Speed" type="xls:SpeedType" minOccurs="0"/>
					<element name="Direction" type="xls:AngleType" minOccurs="0"/>
				</sequence>
				<attribute name="levelOfConf" type="string" use="optional"/>
			</extension>
		</complexContent>
	</complexType>
	<element name="Position" type="xls:PositionType" substitutionGroup="xls:_Position">
		<annotation>
			<documentation>The Position ADT. Normally used to represent an observation/calculated position for a mobile terminal, but can be any position used by the platform. Contains Point with optional Shape, QoP, Speed, Direction and Time. Also has levelOfConfidence attribute.</documentation>
		</annotation>
	</element>
	<complexType name="QualityOfPositionType">
		<sequence>
			<element name="HorizontalAcc" type="xls:HorAccType"/>
			<element name="VerticalAcc" type="xls:VerAccType"/>
		</sequence>
		<attribute name="responseReq" use="optional" default="Delay_Tol">
			<simpleType>
				<restriction base="string">
					<enumeration value="No_Delay"/>
					<enumeration value="Low_Delay"/>
					<enumeration value="Delay_Tol"/>
				</restriction>
			</simpleType>
		</attribute>
		<attribute name="responseTimer" type="string" use="optional"/>
	</complexType>
	<complexType name="HorAccType">
		<choice>
			<element ref="xls:Distance"/>
			<element ref="xls:Angle"/>
			<!-- modified this type to Angle instead of multiangle based on Maidenhead decision not to use 
			multiangle in the OpenLS uom - marwa 26/1/02         -->
		</choice>
	</complexType>
	<complexType name="VerAccType">
		<sequence>
			<element ref="xls:Distance"/>
		</sequence>
	</complexType>
	<!-- ====================================================== 
						Point of Interest ADT
	===========================================================-->
	<complexType name="AbstractPOIType" abstract="true">
		<complexContent>
			<extension base="xls:AbstractLocationType"/>
		</complexContent>
	</complexType>
	<element name="_POI" type="xls:AbstractPOIType" substitutionGroup="xls:_Location">
		<annotation>
			<documentation>Point of Interest is a place, product or service  with a fixed position, typically identified by name rather than by address and characterized by type, that may be used as a reference point or a target in a location based service request.</documentation>
		</annotation>
	</element>
	<complexType name="PointOfInterestType">
		<complexContent>
			<extension base="xls:AbstractPOIType">
				<sequence>
					<annotation>
						<documentation> We need to look more closely at this choice block (it's too restrictive). Since we don't have a getCapabilities, there is really no way that a client can discover the information a Directory Service could possibly return. Also, clients have no way to specify which of these information types they want returned (ReferenceSystem, POIInfoList, Point, and/or Address), like we do for GeoCode. Plus, when a Directory Service has two or more of these types, with the choice block there is no way for the a client to receive the full information set. Do we want to change this to a sequence block and/or change POIAttributeList and/or Point to optional? Also, we need to examine the role of POI in this form since it may not return a Point or Address and therefore may not have sufficient info to be used in location services that require a position of some sort.  
[MM] 17/3/03. Made the change from a choice block to a sequence block. Made the elements optional inside the sequence block
 </documentation>
					</annotation>
					<element ref="xls:POIAttributeList" minOccurs="0"/>
					<element ref="gml:Point" minOccurs="0"/>
					<element ref="xls:Address" minOccurs="0"/>
					<!--  ref="xls:Point"/> -->
				</sequence>
				<attribute name="ID" type="string" use="required"/>
				<attribute name="POIName" type="string" use="optional"/>
				<attribute name="phoneNumber" type="string" use="optional"/>
				<attribute name="description" type="string" use="optional"/>
			</extension>
		</complexContent>
	</complexType>
	<element name="POI" type="xls:PointOfInterestType" substitutionGroup="xls:_POI">
		<annotation>
			<documentation>The POI ADT. Primarily generated in the responses from Directory Services. Can also be used as a filter in the request to a Directory Service for nearest/within distance conditions. </documentation>
		</annotation>
	</element>
	<element name="POIAttributeList" type="xls:POIAttributeListType">
		<annotation>
			<documentation>One or more formal name classifications and/or one or more name/value pairs.</documentation>
		</annotation>
	</element>
	<complexType name="POIAttributeListType">
		<sequence>
			<element ref="xls:ReferenceSystem" minOccurs="0"/>
			<element ref="xls:POIInfoList" minOccurs="0"/>
		</sequence>
	</complexType>
	<complexType name="POIInfoListType">
		<sequence>
			<element ref="xls:POIInfo" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="POIInfoList" type="xls:POIInfoListType">
		<annotation>
			<documentation>List of other information available about the POI in name/value pairs.</documentation>
		</annotation>
	</element>
	<complexType name="POIInfoType">
		<attribute name="name" type="string" use="required"/>
		<attribute name="value" type="string" use="required"/>
	</complexType>
	<element name="POIInfo" type="xls:POIInfoType">
		<annotation>
			<documentation>POI Information defined as a Name/Value pair</documentation>
		</annotation>
	</element>
	<complexType name="ReferenceSystemType">
		<sequence>
			<element ref="xls:_NamedReferenceSystem" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="ReferenceSystem" type="xls:ReferenceSystemType">
		<annotation>
			<documentation>Formal name reference system. Three are defined here (NACE, NAICS and SIC), but any others may be defined and added to this schema.</documentation>
		</annotation>
	</element>
	<complexType name="AbstractNamedReferenceSystem" abstract="true"/>
	<element name="_NamedReferenceSystem" type="xls:AbstractNamedReferenceSystem" abstract="true"/>
	<complexType name="NAICSType">
		<complexContent>
			<extension base="xls:AbstractNamedReferenceSystem">
				<attribute name="type" type="string" use="optional"/>
				<attribute name="subType" type="string" use="optional"/>
				<attribute name="category" type="string" use="optional"/>
			</extension>
		</complexContent>
	</complexType>
	<element name="NAICS" type="xls:NAICSType" substitutionGroup="xls:_NamedReferenceSystem"/>
	<complexType name="SICType">
		<complexContent>
			<extension base="xls:AbstractNamedReferenceSystem">
				<attribute name="type" type="string" use="optional"/>
				<attribute name="subType" type="string" use="optional"/>
				<attribute name="category" type="string" use="optional"/>
				<attribute name="code" type="string" use="optional"/>
			</extension>
		</complexContent>
	</complexType>
	<element name="SIC" type="xls:SICType" substitutionGroup="xls:_NamedReferenceSystem"/>
	<complexType name="NACEType">
		<complexContent>
			<extension base="xls:AbstractNamedReferenceSystem">
				<attribute name="division" type="string" use="optional"/>
				<attribute name="group" type="string" use="optional"/>
				<attribute name="class" type="string" use="optional"/>
				<attribute name="description" type="string" use="optional"/>
			</extension>
		</complexContent>
	</complexType>
	<element name="NACE" type="xls:NACEType" substitutionGroup="xls:_NamedReferenceSystem"/>
	<!-- ============================================================================ -->
	<element name="AOI" type="xls:AreaOfInterestType" substitutionGroup="xls:_ADT">
		<annotation>
			<documentation>The Area of Interest (AOI) ADT. Can be a Circle, Polygon or Point.</documentation>
		</annotation>
	</element>
	<complexType name="AreaOfInterestType">
		<complexContent>
			<extension base="xls:AbstractDataType">
				<choice>
					<element ref="gml:CircleByCenterPoint"/>
					<element ref="gml:Polygon"/>
					<element ref="gml:Envelope"/>
					<!-- ref="xls:Circle"/> -->
					<!-- <element ref="xls:Box"/> -->
				</choice>
			</extension>
		</complexContent>
	</complexType>
	<!--=============================================================================
						Address ADT definitions
	================================================================================ -->
	<complexType name="AbstractAddressType" abstract="true">
		<annotation>
			<documentation>
	The AddressType is the Address_ADT for OpenLS and it supports the concepts of the OGC Geocoder document 01-026r1
	with some modifications which resulted in both simplifications and improved handling capability.  The definition is also
	broad enough to handle some of the more obscure occurrences of street addressing as well as handling the
	case of when all you have is an un-parsed string representing the complete address.  We could generalize this even
	further to handle non-street addressing schemes found in other industries, such as the Municipal Survey Addressing
	schemes that are used by Municipalities to address the lots on which a building may be placed but that is probably a
	future requirement outside the scope of OLS1.
		</documentation>
		</annotation>
		<complexContent>
			<extension base="xls:AbstractLocationType">
				<attribute name="addressee" type="string" use="optional"/>
				<attribute name="countryCode" type="xls:CountryCodeType" use="required"/>
				<attribute name="language" type="language" use="optional">
					<annotation>
						<documentation>the language of the address to be specified. For example, in Canada, this can be used to specify "FR" (French) as the language. By supporting both country code and language, we allow the "locale" of the address to be fully specified, which assists in parsing of freeform addresses. ISO 639 2-Letter code is expected here.</documentation>
					</annotation>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="CountryCodeType">
		<annotation>
			<documentation xml:lang="en">
		ISO 3166 Alpha-2 Country Codes
		</documentation>
		</annotation>
		<restriction base="string">
                          <minLength value="2"/>
                          <maxLength value="3"/>
		</restriction>
	</simpleType>
	<complexType name="StreetAddressType">
		<annotation>
			<documentation>A set of precise and complete data elements that cannot be subdivided and that describe the physical location of a place.</documentation>
		</annotation>
		<sequence>
			<element ref="xls:_StreetLocation" minOccurs="0"/>
			<element ref="xls:Street" maxOccurs="unbounded"/>
		</sequence>
		<attribute name="locator">
			<annotation>
				<documentation>typically used for the street number (e.g. 23)
				a.	Can accommodate a number, or any other building locator
b.	“windmill house”, “24E” and “323” are acceptable uses of the locator
c.	We will adopt the following conventions for representing address ranges in the locator attribute:
i.	Discontinuous range example: “1-9”    means 1,3,5,7,9
ii.	Two discontinous ranges: “1-9,2-10” implies 1,3,5,7,9 on one side of block and 2,4,6,8,10 on other side of block
iii.	Continous range: “1…10” means 1,2,3,4,5,6,7,8,9,10
				</documentation>
			</annotation>
		</attribute>
	</complexType>
	<element name="StreetAddress" type="xls:StreetAddressType">
		<annotation>
			<documentation>Structured street address.</documentation>
		</annotation>
	</element>
	<element name="_StreetLocation" type="xls:AbstractStreetLocatorType">
		<annotation>
			<documentation>The location on a street.</documentation>
		</annotation>
	</element>
	<complexType name="AbstractStreetLocatorType" abstract="true">
		<annotation>
			<documentation>
	The AbstractStreetLocatorType is an abstract type  for describing the location on a street within an AddressType.
	We do this because the components of a location on a street vary greatly throughout the world.
	So that the schema can accommodate this variation we create derived types such as the
	BuildingLocatorType which has the components for an apartment or suite or floor within a building.
		</documentation>
		</annotation>
	</complexType>
	<element name="Building" type="xls:BuildingLocatorType" substitutionGroup="xls:_StreetLocation">
		<annotation>
			<documentation>An addressable place; normally a location on a street: number, subdivision name and/or building name.</documentation>
		</annotation>
	</element>
	<complexType name="BuildingLocatorType">
		<annotation>
			<documentation>A type of AbstractStreetLocatorType</documentation>
		</annotation>
		<complexContent>
			<extension base="xls:AbstractStreetLocatorType">
				<attribute name="number" type="string" use="optional"/>
				<attribute name="subdivision" type="string" use="optional"/>
				<attribute name="buildingName" type="string" use="optional"/>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StreetNameType">
		<annotation>
			<documentation>The data elements that make up the name of a street. There are two valid methods for encoding this information: 1). Use the structured elements and attributes. 2). The element value may contain a simplified string (e.g. West 83rd. Street).
An example:     <Street directionalPrefix="W" officialName="83RD" typeSuffix="ST"/>
			</documentation>
		</annotation>
		<simpleContent>
			<extension base="string">
				<attribute name="directionalPrefix" type="string" use="optional">
					<annotation>
						<documentation>The direction for a street (e.g., North), placed before the official name.</documentation>
					</annotation>
				</attribute>
				<attribute name="typePrefix" type="string" use="optional">
					<annotation>
						<documentation>The street type (e.g., Rd or Ave) specified before the official name
				</documentation>
					</annotation>
				</attribute>
				<attribute name="officialName" type="string" use="optional">
					<annotation>
						<documentation>
				The name for a street (e.g., Main).
				</documentation>
					</annotation>
				</attribute>
				<attribute name="typeSuffix" type="string" use="optional">
					<annotation>
						<documentation>The street type (e.g., Rd or Ave) specified after the official name</documentation>
					</annotation>
				</attribute>
				<attribute name="directionalSuffix" type="string" use="optional">
					<annotation>
						<documentation>The direction for a street (e.g., North), placed after the official name.</documentation>
					</annotation>
				</attribute>
				<attribute name="muniOctant" type="gml:CompassPointEnumeration" use="optional"/>
			</extension>
		</simpleContent>
	</complexType>
	<element name="Street" type="xls:StreetNameType">
		<annotation>
			<documentation>Structured Street Name.</documentation>
		</annotation>
	</element>
	<element name="Address" type="xls:AddressType" substitutionGroup="xls:_Location">
		<annotation>
			<documentation>The Address ADT. An address that is either a “Free Form Address” or a “Street Address” or an “Intersection Address”, with 0 or more “place” elements and an optional “postalCode” element. It also has two optional attributes, the “addressee” and the “phone number”, and one required attribute, the “country”.</documentation>
		</annotation>
	</element>
	<complexType name="AddressType">
		<annotation>
			<documentation>Defines an address</documentation>
		</annotation>
		<complexContent>
			<extension base="xls:AbstractAddressType">
				<choice>
					<element name="freeFormAddress" type="string">
						<annotation>
							<documentation>An unstructured free form address.</documentation>
						</annotation>
					</element>
					<sequence>
						<element ref="xls:StreetAddress"/>
						<element ref="xls:Place" minOccurs="0" maxOccurs="unbounded"/>
						<element ref="xls:PostalCode" minOccurs="0"/>
					</sequence>
				</choice>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="NamedPlaceClassification">
		<annotation>
			<documentation>The classification for the hierarchy a level of which is defined to be one of five different types: CountrySubDivision, CountrySecondarySubdivision, Municipality, or MunicipalitySubdivision.</documentation>
		</annotation>
		<restriction base="string">
			<enumeration value="CountrySubdivision"/>
			<enumeration value="CountrySecondarySubdivision"/>
			<enumeration value="Municipality"/>
			<enumeration value="MunicipalitySubdivision"/>
			<enumeration value="choume-banchi-go"/>
		</restriction>
	</simpleType>
	<element name="Place" type="xls:NamedPlaceType">
		<annotation>
			<documentation>Place represents a hierarchical set of geographic regions/placenames: country subdivision, country secondary subdivision, municipality, and municipality subdivision.</documentation>
		</annotation>
	</element>
	<complexType name="NamedPlaceType">
		<annotation>
			<documentation>
	The NamedPlaceType defines a named place within an AddressType.
	A named place has a classification (such as country, country subdivision, or municipality).
		</documentation>
		</annotation>
		<simpleContent>
			<extension base="string">
				<attribute name="type" type="xls:NamedPlaceClassification" use="required"/>
			</extension>
		</simpleContent>
	</complexType>
	<element name="PostalCode" type="xls:PostalCodeType">
		<annotation>
			<documentation>A zipcode or international postal code as defined by the governing postal authority.</documentation>
		</annotation>
	</element>
	<simpleType name="PostalCodeType">
		<annotation>
			<documentation>
	The AbstractPostalCodeType is an abstract type  for postal code within an AddressType.
	We do this because the components of a postal code vary greatly throughout the world.
	So that the schema can accommodate this variation we create derived types such as the
	USZipCodeType which has the components for a US zipcode
		</documentation>
		</annotation>
		<restriction base="string"/>
	</simpleType>
	<!-- ========================================================== -->
	<annotation>
		<documentation>These types don't fit well with ADTs, rather with Location Utility. Should move them. Also, GeocodingQOSType should be renamed GeocodeMatchCodeType, for consistency, or the element GeocodeMatchCode should be renamed GeocodingQOS.</documentation>
	</annotation>
	<element name="GeocodeMatchCode" type="xls:GeocodingQOSType">
		<annotation>
			<documentation>Provides information on the quality of the match operation (accuracy and match code).</documentation>
		</annotation>
	</element>
	<complexType name="GeocodingQOSType">
		<annotation>
			<documentation>Quality of service type</documentation>
		</annotation>
		<attribute name="accuracy" type="float" use="optional">
			<annotation>
				<documentation>This is the score (probability) assocaited with the match function</documentation>
			</annotation>
		</attribute>
		<attribute name="matchType" type="string" use="optional">
			<annotation>
				<documentation>Describes the type of match made by the function, example zip+4</documentation>
			</annotation>
		</attribute>
	</complexType>
	<!-- ======================================================
							Map ADT
	========================================================= -->
	<element name="Map" type="xls:MapType" substitutionGroup="xls:_ADT"/>
	<complexType name="MapType">
		<complexContent>
			<extension base="xls:AbstractDataType">
				<sequence minOccurs="0">
					<element name="Content" type="xls:ContentType"/>
					<choice>
						<element name="BBoxContext" type="gml:EnvelopeType"/>
						<element name="CenterContext" type="xls:CenterContextType"/>
						<!--  type="xls:BoxType"/> -->
					</choice>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ContentType">
		<choice>
			<element name="Data" type="string">
				<annotation>
					<documentation>Map data embeded into the xml (if map data is binary then it is base64 encoded)	</documentation>
				</annotation>
			</element>
			<element name="URL" type="string">
				<annotation>
					<documentation>The Data can be found at this URL</documentation>
				</annotation>
			</element>
		</choice>
		<attribute name="format" type="string" use="required"/>
		<attribute name="width" type="integer" use="required"/>
		<attribute name="height" type="integer" use="required"/>
	</complexType>
	<complexType name="CenterContextType">
		<sequence>
			<element name="CenterPoint" type="gml:PointType">
				<annotation>
					<documentation>lat/long WGS84 point to center the map on</documentation>
				</annotation>
				<!-- type="xls:PointType"> -->
			</element>
			<choice>
				<sequence>
					<element name="DisplayScale" type="integer">
						<annotation>
							<documentation>A ratio of distance.  For example 1:5000 would be expressed as 5000, it's always expressed per 1 pixel of the display</documentation>
						</annotation>
					</element>
					<element name="DPI" type="integer">
						<annotation>
							<documentation>Dots per Inch of the display device.</documentation>
						</annotation>
					</element>
				</sequence>
				<sequence>
					<element name="Radius" type="xls:RadiusType">
						<annotation>
							<documentation>This defines the area that will be required to be displayed</documentation>
						</annotation>
					</element>
				</sequence>
			</choice>
		</sequence>
		<attribute name="azimuth" type="integer" use="optional">
			<annotation>
				<documentation>The orientation of the map, clockwise degrees from north.</documentation>
			</annotation>
		</attribute>
		<attribute name="SRS" type="string" use="required">
			<annotation>
				<documentation>The Spatial Reference System that the data with be projected to in EPSG:XXXX format (getCapabilites provides the list of SRS's supported).</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="RadiusType">
		<simpleContent>
			<extension base="decimal">
				<attribute name="unit" type="xls:DistanceUnitType" use="required"/>
			</extension>
		</simpleContent>
	</complexType>
	<!--	=============================================================================== 
					Route Abstract Types
	==================================================================================== -->
	<complexType name="AbstractRouteSummaryType" abstract="true">
		<annotation>
			<documentation>Abstract type which specifies a route's overall characteristics.</documentation>
		</annotation>
		<complexContent>
			<extension base="xls:AbstractDataType">
				<sequence>
					<element name="TotalTime" type="duration">
						<annotation>
							<documentation>Estimated time to travel the complete route.  Expressed as a duration as defined by W3C. reference URL: http://www.w3c.org/TR/xmlschema-2/</documentation>
						</annotation>
					</element>
					<element name="TotalDistance" type="xls:DistanceType">
						<annotation>
							<documentation>Total distance covered by the route.</documentation>
						</annotation>
					</element>
					<element ref="xls:BoundingBox">
						<annotation>
							<documentation>Rectangular area bounding the complete route.</documentation>
						</annotation>
					</element>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name="_RouteSummary" type="xls:AbstractRouteSummaryType" abstract="true" substitutionGroup="xls:_ADT">
		<annotation>
			<documentation>Base element which represents a route's overall characteristics.</documentation>
		</annotation>
	</element>
	<complexType name="AbstractRouteSegmentType" abstract="true">
		<annotation>
			<documentation>Defines the characteristics of a segment along a route.</documentation>
		</annotation>
		<sequence>
			<element ref="xls:Distance">
				<annotation>
					<documentation>Distance along the segment.</documentation>
				</annotation>
			</element>
			<element name="TravelTime" type="duration">
				<annotation>
					<documentation>Estimated time to travel the complete route,   Expressed as a duration as defined by W3C. reference URL: http://www.w3c.org/TR/xmlschema-2</documentation>
				</annotation>
			</element>
			<element ref="xls:BoundingBox">
				<annotation>
					<documentation>Rectangular area bounding the segment.</documentation>
				</annotation>
			</element>
		</sequence>
		<attribute name="name" type="string" use="optional">
			<annotation>
				<documentation>Name of segment, e.g.: street name, or the name of the public transit line.  When the name is unknown, this should be an empty string.  When not specified, the name is assumed to be the same as the previous segment.</documentation>
			</annotation>
		</attribute>
	</complexType>
	<element name="_NextSegment" type="xls:AbstractRouteSegmentType" abstract="true">
		<annotation>
			<documentation>Base element which represents the information about the segment of the route between the current maneuver and the next.</documentation>
		</annotation>
	</element>
	<complexType name="AbstractWayPointType" abstract="true">
		<annotation>
			<documentation>Abstract type representing a location to be visited along a route.</documentation>
		</annotation>
	</complexType>
	<element name="_WayPoint" type="xls:AbstractWayPointType" abstract="true">
		<annotation>
			<documentation>A location to be visited along a route.</documentation>
		</annotation>
	</element>
	<!--	=============================================================================== 
				Route ADT
	==================================================================================== -->
	<complexType name="RouteSummaryType">
		<annotation>
			<documentation>Specifies a route's overall characteristics.</documentation>
		</annotation>
		<complexContent>
			<extension base="xls:AbstractRouteSummaryType"/>
		</complexContent>
	</complexType>
	<element name="RouteSummary" type="xls:RouteSummaryType" substitutionGroup="xls:_RouteSummary">
		<annotation>
			<documentation>A route's overall characteristics.</documentation>
		</annotation>
	</element>
	<element name="BoundingBox" type="gml:EnvelopeType">
		<annotation>
			<documentation>Rectangular bounding area.</documentation>
		</annotation>
		<!-- type="xls:BoxType" changed to gml:EnvelopeType -->
	</element>
	<complexType name="RouteSegmentType">
		<annotation>
			<documentation>Defines the characteristics of a segment along a route.</documentation>
		</annotation>
		<complexContent>
			<extension base="xls:AbstractRouteSegmentType"/>
		</complexContent>
	</complexType>
	<element name="NextSegment" type="xls:RouteSegmentType" substitutionGroup="xls:_NextSegment">
		<annotation>
			<documentation>Information about the segment of the route between this maneuver and the next.</documentation>
		</annotation>
	</element>
	<complexType name="WayPointType">
		<annotation>
			<documentation>Defines a location to be visited along a route.</documentation>
		</annotation>
		<complexContent>
			<extension base="xls:AbstractWayPointType">
				<sequence>
					<element ref="xls:_Location"/>
					<element ref="xls:GeocodeMatchCode" minOccurs="0"/>
				</sequence>
				<attribute name="stop" type="boolean" use="optional" default="true">
					<annotation>
						<documentation>Specifies whether the traveler plans to stop at the waypoint, or simply pass through it.								</documentation>
					</annotation>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<element name="StartPoint" type="xls:WayPointType" substitutionGroup="xls:_WayPoint">
		<annotation>
			<documentation>Starting point of the route.</documentation>
		</annotation>
	</element>
	<element name="ViaPoint" type="xls:WayPointType" substitutionGroup="xls:_WayPoint">
		<annotation>
			<documentation>Intermediate waypoint along the route.</documentation>
		</annotation>
	</element>
	<element name="EndPoint" type="xls:WayPointType" substitutionGroup="xls:_WayPoint">
		<annotation>
			<documentation>Ending point of the route (i.e. the destination)</documentation>
		</annotation>
	</element>
	<complexType name="WayPointListType">
		<annotation>
			<documentation>Defines a list of waypoints along a route.</documentation>
		</annotation>
		<sequence>
			<element ref="xls:StartPoint"/>
			<element ref="xls:ViaPoint" minOccurs="0" maxOccurs="unbounded"/>
			<element ref="xls:EndPoint"/>
		</sequence>
	</complexType>
	<element name="WayPointList" type="xls:WayPointListType">
		<annotation>
			<documentation>List of waypoints along a route.</documentation>
		</annotation>
	</element>
	<element name="RouteInstructionsList" type="xls:RouteInstructionsListType" substitutionGroup="xls:_ADT">
		<annotation>
			<documentation>A list of route instructions.</documentation>
		</annotation>
	</element>
	<complexType name="RouteInstructionsListType">
		<annotation>
			<documentation>Defines a list of route instructions.</documentation>
		</annotation>
		<complexContent>
			<extension base="xls:AbstractDataType">
				<sequence>
					<element ref="xls:RouteInstruction" maxOccurs="unbounded"/>
				</sequence>
				<attribute name="format" type="string" use="optional" default="text/plain">
					<annotation>
						<documentation>Mime type describing the encoding.</documentation>
					</annotation>
				</attribute>
				<attribute ref="xls:lang" use="required">
					<annotation>
						<documentation>Specifies the language in which the instructions are given.</documentation>
					</annotation>
				</attribute>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="RouteInstructionType">
		<annotation>
			<documentation>Defines a single turn-by-turn route instruction or advisory formatted for presentation.</documentation>
		</annotation>
		<sequence>
			<element name="Instruction" type="string"/>
			<element name="distance" type="xls:DistanceType"/>
			<element name="RouteInstructionGeometry" type="xls:RouteGeometryType" minOccurs="0"/>
			<element name="BoundingBox" type="gml:EnvelopeType" minOccurs="0"/>
		</sequence>
		<attribute name="duration" type="duration" use="required">
			<annotation>
				<documentation>Specifies the duration needed to execute those instructions. Duration is expressed as defined in the W3C defintion. Reference URL: http://www.w3c.org/TR/xmlschema-2/</documentation>
			</annotation>
		</attribute>
		<attribute name="description" type="string">
			<annotation>
				<documentation>Allows the route instruction to be matched with a RouteMapType. For example "maneuver 1"</documentation>
			</annotation>
		</attribute>
	</complexType>
	<element name="RouteInstruction" type="xls:RouteInstructionType">
		<annotation>
			<documentation>A turn-by-turn route instruction or advisory formatted for presentation.</documentation>
		</annotation>
	</element>
	<element name="RouteHandle" type="xls:RouteHandleType">
		<annotation>
			<documentation>A reference to a route stored at the Route Determination Service server.</documentation>
		</annotation>
	</element>
	<complexType name="RouteHandleType">
		<annotation>
			<documentation>Defines a reference to a route stored at the Route Determination Service server.</documentation>
		</annotation>
		<attribute name="serviceID" type="string" use="optional">
			<annotation>
				<documentation>Uniquely identifies the service which holds the route.</documentation>
			</annotation>
		</attribute>
		<attribute name="routeID" type="string" use="required">
			<annotation>
				<documentation>Uniquely identifies the route store at the service.</documentation>
			</annotation>
		</attribute>
	</complexType>
	<complexType name="RouteGeometryType">
		<annotation>
			<documentation>Defines the geometry of a route.</documentation>
		</annotation>
		<complexContent>
			<extension base="xls:AbstractDataType">
				<sequence>
					<element ref="gml:LineString"/>
					<!-- ref="xls:LineString"/> -->
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name="RouteGeometry" type="xls:RouteGeometryType" substitutionGroup="xls:_ADT">
		<annotation>
			<documentation>Geometry of a route.</documentation>
		</annotation>
	</element>
</schema>
